]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
iconGrid: Keep icons reactive during pulse animation
authorDaniel van Vugt <daniel.van.vugt@canonical.com>
Fri, 12 Oct 2018 04:00:31 +0000 (12:00 +0800)
committerFlorian Müllner <fmuellner@gnome.org>
Tue, 30 Oct 2018 18:58:52 +0000 (19:58 +0100)
The `reactive` property of icon actors was being restored multiple times
over the course of the pulse animation, all at slightly different times
as each icon finished animating at different times.

The problem is that toggling `reactive` on an `StWidget` incurs a style
change of the `insensitive` pseudo class, and style changes would quickly
queue relayouts incurring full stage reallocation. This occurred many times
during a pulse animation, limiting its smoothness and performance.

The solution is to not toggle the `reactive` property in the pulse
animation at all, which avoids incurring multiple full stage relayouts.

As a bonus, this means the icon under the cursor pulses with the correct
selection highlight, appearing more seamless and responsive.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/261

js/ui/iconGrid.js

index 5aff027844eedeb81f782c4dc2685ba1fd559a56..94387a333b2e1905b91a753007cae84c14631b65 100644 (file)
@@ -469,7 +469,6 @@ var IconGrid = new Lang.Class({
 
         for (let index = 0; index < actors.length; index++) {
             let actor = actors[index];
-            actor.reactive = false;
             actor.set_scale(0, 0);
             actor.set_pivot_point(0.5, 0.5);
 
@@ -491,7 +490,6 @@ var IconGrid = new Lang.Class({
                                                      onComplete: () => {
                                                         if (isLastItem)
                                                             this._animationDone();
-                                                        actor.reactive = true;
                                                     }
                                                    });
                               }